package cn.iocoder.yudao.module.cmt.controller.admin.activity.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;

@Schema(description = "管理后台 - ActivityInfo Response VO")
@Data
@ExcelIgnoreUnannotated
public class ActivityInfoRespVO {

    @Schema(description = "活动ID", example = "1")
    @ExcelProperty("活动ID")
    private Long id;

    @Schema(description = "社区ID", example = "1")
    @ExcelProperty("社区ID")
    private Long communityId;

    @Schema(description = "商户ID(活动发起商户)", example = "1")
    @ExcelProperty("商户ID")
    private Long merchantId;

    @Schema(description = "活动分类ID", example = "1")
    @ExcelProperty("活动分类ID")
    private Long categoryId;

    @Schema(description = "活动标题", example = "社区志愿服务活动")
    @ExcelProperty("活动标题")
    private String title;

    @Schema(description = "封面图片")
    @ExcelProperty("封面图片")
    private String coverImage;

    @Schema(description = "轮播图片")
    @ExcelProperty("轮播图片")
    private String bannerImage;

    @Schema(description = "活动图片(JSON数组)")
    @ExcelProperty("活动图片")
    private String images;

    @Schema(description = "活动描述")
    @ExcelProperty("活动描述")
    private String description;

    @Schema(description = "活动详情")
    @ExcelProperty("活动详情")
    private String content;

    @Schema(description = "活动阵地ID", example = "1")
    @ExcelProperty("活动阵地ID")
    private Long venueId;

    @Schema(description = "活动地址")
    @ExcelProperty("活动地址")
    private String address;

    @Schema(description = "经度", example = "116.404")
    @ExcelProperty("经度")
    private BigDecimal longitude;

    @Schema(description = "纬度", example = "39.915")
    @ExcelProperty("纬度")
    private BigDecimal latitude;

    @Schema(description = "开始时间")
    @ExcelProperty("开始时间")
    private LocalDateTime startTime;

    @Schema(description = "结束时间")
    @ExcelProperty("结束时间")
    private LocalDateTime endTime;

    @Schema(description = "报名开始时间")
    @ExcelProperty("报名开始时间")
    private LocalDateTime signupStartTime;

    @Schema(description = "报名截止时间")
    @ExcelProperty("报名截止时间")
    private LocalDateTime signupEndTime;

    @Schema(description = "最大参与人数(0不限)", example = "100")
    @ExcelProperty("最大参与人数")
    private Integer maxParticipants;

    @Schema(description = "当前报名人数", example = "50")
    @ExcelProperty("当前报名人数")
    private Integer currentParticipants;

    @Schema(description = "积分奖励", example = "10")
    @ExcelProperty("积分奖励")
    private Integer pointReward;

    @Schema(description = "经验奖励", example = "5")
    @ExcelProperty("经验奖励")
    private Integer experienceReward;

    @Schema(description = "服务时长(小时)", example = "2.5")
    @ExcelProperty("服务时长")
    private BigDecimal serviceHours;

    @Schema(description = "活动状态：0草稿 1报名中 2进行中 3已结束 4已取消", example = "1")
    @ExcelProperty("活动状态")
    private Integer activityStatus;

    @Schema(description = "是否推荐：0否 1是", example = "1")
    @ExcelProperty("是否推荐")
    private Integer isRecommend;

    @Schema(description = "是否热门：0否 1是", example = "1")
    @ExcelProperty("是否热门")
    private Integer isHot;

    @Schema(description = "主办方")
    @ExcelProperty("主办方")
    private String organizer;

    @Schema(description = "联系人")
    @ExcelProperty("联系人")
    private String contactPerson;

    @Schema(description = "联系电话")
    @ExcelProperty("联系电话")
    private String contactPhone;

    @Schema(description = "附件(JSON数组)")
    @ExcelProperty("附件")
    private String attachments;

    @Schema(description = "浏览次数", example = "100")
    @ExcelProperty("浏览次数")
    private Integer viewCount;

    @Schema(description = "点赞次数", example = "50")
    @ExcelProperty("点赞次数")
    private Integer likeCount;

    @Schema(description = "分享次数", example = "20")
    @ExcelProperty("分享次数")
    private Integer shareCount;

    @Schema(description = "评论次数", example = "30")
    @ExcelProperty("评论次数")
    private Integer commentCount;

    @Schema(description = "评分", example = "4.5")
    @ExcelProperty("评分")
    private BigDecimal rating;

    @Schema(description = "排序", example = "1")
    @ExcelProperty("排序")
    private Integer sort;

    @Schema(description = "创建时间")
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

}
